↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
slowsort_in(X, Y) → U1(X, Y, perm_in(X, Y))
perm_in(.(X, .(Y, [])), .(U, .(V, []))) → U5(X, Y, U, V, delete_in(U, .(X, Y), Z))
delete_in(X, .(Y, Z), W) → U7(X, Y, Z, W, delete_in(X, Z, W))
delete_in(X, .(X, Y), Y) → delete_out(X, .(X, Y), Y)
U7(X, Y, Z, W, delete_out(X, Z, W)) → delete_out(X, .(Y, Z), W)
U5(X, Y, U, V, delete_out(U, .(X, Y), Z)) → U6(X, Y, U, V, perm_in(Z, V))
perm_in([], []) → perm_out([], [])
U6(X, Y, U, V, perm_out(Z, V)) → perm_out(.(X, .(Y, [])), .(U, .(V, [])))
U1(X, Y, perm_out(X, Y)) → U2(X, Y, sorted_in(Y))
sorted_in(.(X, .(Y, Z))) → U3(X, Y, Z, le_in(X, Y))
le_in(0, 0) → le_out(0, 0)
le_in(0, s(X)) → le_out(0, s(X))
le_in(s(X), s(Y)) → U8(X, Y, le_in(X, Y))
U8(X, Y, le_out(X, Y)) → le_out(s(X), s(Y))
U3(X, Y, Z, le_out(X, Y)) → U4(X, Y, Z, sorted_in(.(Y, Z)))
sorted_in(.(X, [])) → sorted_out(.(X, []))
sorted_in([]) → sorted_out([])
U4(X, Y, Z, sorted_out(.(Y, Z))) → sorted_out(.(X, .(Y, Z)))
U2(X, Y, sorted_out(Y)) → slowsort_out(X, Y)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PrologToPiTRSProof
slowsort_in(X, Y) → U1(X, Y, perm_in(X, Y))
perm_in(.(X, .(Y, [])), .(U, .(V, []))) → U5(X, Y, U, V, delete_in(U, .(X, Y), Z))
delete_in(X, .(Y, Z), W) → U7(X, Y, Z, W, delete_in(X, Z, W))
delete_in(X, .(X, Y), Y) → delete_out(X, .(X, Y), Y)
U7(X, Y, Z, W, delete_out(X, Z, W)) → delete_out(X, .(Y, Z), W)
U5(X, Y, U, V, delete_out(U, .(X, Y), Z)) → U6(X, Y, U, V, perm_in(Z, V))
perm_in([], []) → perm_out([], [])
U6(X, Y, U, V, perm_out(Z, V)) → perm_out(.(X, .(Y, [])), .(U, .(V, [])))
U1(X, Y, perm_out(X, Y)) → U2(X, Y, sorted_in(Y))
sorted_in(.(X, .(Y, Z))) → U3(X, Y, Z, le_in(X, Y))
le_in(0, 0) → le_out(0, 0)
le_in(0, s(X)) → le_out(0, s(X))
le_in(s(X), s(Y)) → U8(X, Y, le_in(X, Y))
U8(X, Y, le_out(X, Y)) → le_out(s(X), s(Y))
U3(X, Y, Z, le_out(X, Y)) → U4(X, Y, Z, sorted_in(.(Y, Z)))
sorted_in(.(X, [])) → sorted_out(.(X, []))
sorted_in([]) → sorted_out([])
U4(X, Y, Z, sorted_out(.(Y, Z))) → sorted_out(.(X, .(Y, Z)))
U2(X, Y, sorted_out(Y)) → slowsort_out(X, Y)
SLOWSORT_IN(X, Y) → U11(X, Y, perm_in(X, Y))
SLOWSORT_IN(X, Y) → PERM_IN(X, Y)
PERM_IN(.(X, .(Y, [])), .(U, .(V, []))) → U51(X, Y, U, V, delete_in(U, .(X, Y), Z))
PERM_IN(.(X, .(Y, [])), .(U, .(V, []))) → DELETE_IN(U, .(X, Y), Z)
DELETE_IN(X, .(Y, Z), W) → U71(X, Y, Z, W, delete_in(X, Z, W))
DELETE_IN(X, .(Y, Z), W) → DELETE_IN(X, Z, W)
U51(X, Y, U, V, delete_out(U, .(X, Y), Z)) → U61(X, Y, U, V, perm_in(Z, V))
U51(X, Y, U, V, delete_out(U, .(X, Y), Z)) → PERM_IN(Z, V)
U11(X, Y, perm_out(X, Y)) → U21(X, Y, sorted_in(Y))
U11(X, Y, perm_out(X, Y)) → SORTED_IN(Y)
SORTED_IN(.(X, .(Y, Z))) → U31(X, Y, Z, le_in(X, Y))
SORTED_IN(.(X, .(Y, Z))) → LE_IN(X, Y)
LE_IN(s(X), s(Y)) → U81(X, Y, le_in(X, Y))
LE_IN(s(X), s(Y)) → LE_IN(X, Y)
U31(X, Y, Z, le_out(X, Y)) → U41(X, Y, Z, sorted_in(.(Y, Z)))
U31(X, Y, Z, le_out(X, Y)) → SORTED_IN(.(Y, Z))
slowsort_in(X, Y) → U1(X, Y, perm_in(X, Y))
perm_in(.(X, .(Y, [])), .(U, .(V, []))) → U5(X, Y, U, V, delete_in(U, .(X, Y), Z))
delete_in(X, .(Y, Z), W) → U7(X, Y, Z, W, delete_in(X, Z, W))
delete_in(X, .(X, Y), Y) → delete_out(X, .(X, Y), Y)
U7(X, Y, Z, W, delete_out(X, Z, W)) → delete_out(X, .(Y, Z), W)
U5(X, Y, U, V, delete_out(U, .(X, Y), Z)) → U6(X, Y, U, V, perm_in(Z, V))
perm_in([], []) → perm_out([], [])
U6(X, Y, U, V, perm_out(Z, V)) → perm_out(.(X, .(Y, [])), .(U, .(V, [])))
U1(X, Y, perm_out(X, Y)) → U2(X, Y, sorted_in(Y))
sorted_in(.(X, .(Y, Z))) → U3(X, Y, Z, le_in(X, Y))
le_in(0, 0) → le_out(0, 0)
le_in(0, s(X)) → le_out(0, s(X))
le_in(s(X), s(Y)) → U8(X, Y, le_in(X, Y))
U8(X, Y, le_out(X, Y)) → le_out(s(X), s(Y))
U3(X, Y, Z, le_out(X, Y)) → U4(X, Y, Z, sorted_in(.(Y, Z)))
sorted_in(.(X, [])) → sorted_out(.(X, []))
sorted_in([]) → sorted_out([])
U4(X, Y, Z, sorted_out(.(Y, Z))) → sorted_out(.(X, .(Y, Z)))
U2(X, Y, sorted_out(Y)) → slowsort_out(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
SLOWSORT_IN(X, Y) → U11(X, Y, perm_in(X, Y))
SLOWSORT_IN(X, Y) → PERM_IN(X, Y)
PERM_IN(.(X, .(Y, [])), .(U, .(V, []))) → U51(X, Y, U, V, delete_in(U, .(X, Y), Z))
PERM_IN(.(X, .(Y, [])), .(U, .(V, []))) → DELETE_IN(U, .(X, Y), Z)
DELETE_IN(X, .(Y, Z), W) → U71(X, Y, Z, W, delete_in(X, Z, W))
DELETE_IN(X, .(Y, Z), W) → DELETE_IN(X, Z, W)
U51(X, Y, U, V, delete_out(U, .(X, Y), Z)) → U61(X, Y, U, V, perm_in(Z, V))
U51(X, Y, U, V, delete_out(U, .(X, Y), Z)) → PERM_IN(Z, V)
U11(X, Y, perm_out(X, Y)) → U21(X, Y, sorted_in(Y))
U11(X, Y, perm_out(X, Y)) → SORTED_IN(Y)
SORTED_IN(.(X, .(Y, Z))) → U31(X, Y, Z, le_in(X, Y))
SORTED_IN(.(X, .(Y, Z))) → LE_IN(X, Y)
LE_IN(s(X), s(Y)) → U81(X, Y, le_in(X, Y))
LE_IN(s(X), s(Y)) → LE_IN(X, Y)
U31(X, Y, Z, le_out(X, Y)) → U41(X, Y, Z, sorted_in(.(Y, Z)))
U31(X, Y, Z, le_out(X, Y)) → SORTED_IN(.(Y, Z))
slowsort_in(X, Y) → U1(X, Y, perm_in(X, Y))
perm_in(.(X, .(Y, [])), .(U, .(V, []))) → U5(X, Y, U, V, delete_in(U, .(X, Y), Z))
delete_in(X, .(Y, Z), W) → U7(X, Y, Z, W, delete_in(X, Z, W))
delete_in(X, .(X, Y), Y) → delete_out(X, .(X, Y), Y)
U7(X, Y, Z, W, delete_out(X, Z, W)) → delete_out(X, .(Y, Z), W)
U5(X, Y, U, V, delete_out(U, .(X, Y), Z)) → U6(X, Y, U, V, perm_in(Z, V))
perm_in([], []) → perm_out([], [])
U6(X, Y, U, V, perm_out(Z, V)) → perm_out(.(X, .(Y, [])), .(U, .(V, [])))
U1(X, Y, perm_out(X, Y)) → U2(X, Y, sorted_in(Y))
sorted_in(.(X, .(Y, Z))) → U3(X, Y, Z, le_in(X, Y))
le_in(0, 0) → le_out(0, 0)
le_in(0, s(X)) → le_out(0, s(X))
le_in(s(X), s(Y)) → U8(X, Y, le_in(X, Y))
U8(X, Y, le_out(X, Y)) → le_out(s(X), s(Y))
U3(X, Y, Z, le_out(X, Y)) → U4(X, Y, Z, sorted_in(.(Y, Z)))
sorted_in(.(X, [])) → sorted_out(.(X, []))
sorted_in([]) → sorted_out([])
U4(X, Y, Z, sorted_out(.(Y, Z))) → sorted_out(.(X, .(Y, Z)))
U2(X, Y, sorted_out(Y)) → slowsort_out(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
LE_IN(s(X), s(Y)) → LE_IN(X, Y)
slowsort_in(X, Y) → U1(X, Y, perm_in(X, Y))
perm_in(.(X, .(Y, [])), .(U, .(V, []))) → U5(X, Y, U, V, delete_in(U, .(X, Y), Z))
delete_in(X, .(Y, Z), W) → U7(X, Y, Z, W, delete_in(X, Z, W))
delete_in(X, .(X, Y), Y) → delete_out(X, .(X, Y), Y)
U7(X, Y, Z, W, delete_out(X, Z, W)) → delete_out(X, .(Y, Z), W)
U5(X, Y, U, V, delete_out(U, .(X, Y), Z)) → U6(X, Y, U, V, perm_in(Z, V))
perm_in([], []) → perm_out([], [])
U6(X, Y, U, V, perm_out(Z, V)) → perm_out(.(X, .(Y, [])), .(U, .(V, [])))
U1(X, Y, perm_out(X, Y)) → U2(X, Y, sorted_in(Y))
sorted_in(.(X, .(Y, Z))) → U3(X, Y, Z, le_in(X, Y))
le_in(0, 0) → le_out(0, 0)
le_in(0, s(X)) → le_out(0, s(X))
le_in(s(X), s(Y)) → U8(X, Y, le_in(X, Y))
U8(X, Y, le_out(X, Y)) → le_out(s(X), s(Y))
U3(X, Y, Z, le_out(X, Y)) → U4(X, Y, Z, sorted_in(.(Y, Z)))
sorted_in(.(X, [])) → sorted_out(.(X, []))
sorted_in([]) → sorted_out([])
U4(X, Y, Z, sorted_out(.(Y, Z))) → sorted_out(.(X, .(Y, Z)))
U2(X, Y, sorted_out(Y)) → slowsort_out(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
LE_IN(s(X), s(Y)) → LE_IN(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
LE_IN(s(X), s(Y)) → LE_IN(X, Y)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
SORTED_IN(.(X, .(Y, Z))) → U31(X, Y, Z, le_in(X, Y))
U31(X, Y, Z, le_out(X, Y)) → SORTED_IN(.(Y, Z))
slowsort_in(X, Y) → U1(X, Y, perm_in(X, Y))
perm_in(.(X, .(Y, [])), .(U, .(V, []))) → U5(X, Y, U, V, delete_in(U, .(X, Y), Z))
delete_in(X, .(Y, Z), W) → U7(X, Y, Z, W, delete_in(X, Z, W))
delete_in(X, .(X, Y), Y) → delete_out(X, .(X, Y), Y)
U7(X, Y, Z, W, delete_out(X, Z, W)) → delete_out(X, .(Y, Z), W)
U5(X, Y, U, V, delete_out(U, .(X, Y), Z)) → U6(X, Y, U, V, perm_in(Z, V))
perm_in([], []) → perm_out([], [])
U6(X, Y, U, V, perm_out(Z, V)) → perm_out(.(X, .(Y, [])), .(U, .(V, [])))
U1(X, Y, perm_out(X, Y)) → U2(X, Y, sorted_in(Y))
sorted_in(.(X, .(Y, Z))) → U3(X, Y, Z, le_in(X, Y))
le_in(0, 0) → le_out(0, 0)
le_in(0, s(X)) → le_out(0, s(X))
le_in(s(X), s(Y)) → U8(X, Y, le_in(X, Y))
U8(X, Y, le_out(X, Y)) → le_out(s(X), s(Y))
U3(X, Y, Z, le_out(X, Y)) → U4(X, Y, Z, sorted_in(.(Y, Z)))
sorted_in(.(X, [])) → sorted_out(.(X, []))
sorted_in([]) → sorted_out([])
U4(X, Y, Z, sorted_out(.(Y, Z))) → sorted_out(.(X, .(Y, Z)))
U2(X, Y, sorted_out(Y)) → slowsort_out(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
SORTED_IN(.(X, .(Y, Z))) → U31(X, Y, Z, le_in(X, Y))
U31(X, Y, Z, le_out(X, Y)) → SORTED_IN(.(Y, Z))
le_in(0, 0) → le_out(0, 0)
le_in(0, s(X)) → le_out(0, s(X))
le_in(s(X), s(Y)) → U8(X, Y, le_in(X, Y))
U8(X, Y, le_out(X, Y)) → le_out(s(X), s(Y))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ UsableRulesReductionPairsProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
SORTED_IN(.(X, .(Y, Z))) → U31(Y, Z, le_in(X, Y))
U31(Y, Z, le_out) → SORTED_IN(.(Y, Z))
le_in(0, 0) → le_out
le_in(0, s(X)) → le_out
le_in(s(X), s(Y)) → U8(le_in(X, Y))
U8(le_out) → le_out
le_in(x0, x1)
U8(x0)
The following rules are removed from R:
SORTED_IN(.(X, .(Y, Z))) → U31(Y, Z, le_in(X, Y))
U31(Y, Z, le_out) → SORTED_IN(.(Y, Z))
Used ordering: POLO with Polynomial interpretation [25]:
le_in(0, 0) → le_out
le_in(0, s(X)) → le_out
le_in(s(X), s(Y)) → U8(le_in(X, Y))
U8(le_out) → le_out
POL(.(x1, x2)) = 2 + 2·x1 + 2·x2
POL(0) = 2
POL(SORTED_IN(x1)) = 1 + x1
POL(U31(x1, x2, x3)) = 2 + 2·x1 + 2·x2 + x3
POL(U8(x1)) = 1 + x1
POL(le_in(x1, x2)) = 2 + x1 + 2·x2
POL(le_out) = 2
POL(s(x1)) = 1 + x1
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ UsableRulesReductionPairsProof
↳ QDP
↳ PisEmptyProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
le_in(x0, x1)
U8(x0)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PrologToPiTRSProof
DELETE_IN(X, .(Y, Z), W) → DELETE_IN(X, Z, W)
slowsort_in(X, Y) → U1(X, Y, perm_in(X, Y))
perm_in(.(X, .(Y, [])), .(U, .(V, []))) → U5(X, Y, U, V, delete_in(U, .(X, Y), Z))
delete_in(X, .(Y, Z), W) → U7(X, Y, Z, W, delete_in(X, Z, W))
delete_in(X, .(X, Y), Y) → delete_out(X, .(X, Y), Y)
U7(X, Y, Z, W, delete_out(X, Z, W)) → delete_out(X, .(Y, Z), W)
U5(X, Y, U, V, delete_out(U, .(X, Y), Z)) → U6(X, Y, U, V, perm_in(Z, V))
perm_in([], []) → perm_out([], [])
U6(X, Y, U, V, perm_out(Z, V)) → perm_out(.(X, .(Y, [])), .(U, .(V, [])))
U1(X, Y, perm_out(X, Y)) → U2(X, Y, sorted_in(Y))
sorted_in(.(X, .(Y, Z))) → U3(X, Y, Z, le_in(X, Y))
le_in(0, 0) → le_out(0, 0)
le_in(0, s(X)) → le_out(0, s(X))
le_in(s(X), s(Y)) → U8(X, Y, le_in(X, Y))
U8(X, Y, le_out(X, Y)) → le_out(s(X), s(Y))
U3(X, Y, Z, le_out(X, Y)) → U4(X, Y, Z, sorted_in(.(Y, Z)))
sorted_in(.(X, [])) → sorted_out(.(X, []))
sorted_in([]) → sorted_out([])
U4(X, Y, Z, sorted_out(.(Y, Z))) → sorted_out(.(X, .(Y, Z)))
U2(X, Y, sorted_out(Y)) → slowsort_out(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PrologToPiTRSProof
DELETE_IN(X, .(Y, Z), W) → DELETE_IN(X, Z, W)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PrologToPiTRSProof
DELETE_IN(X) → DELETE_IN(X)
DELETE_IN(X) → DELETE_IN(X)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PrologToPiTRSProof
PERM_IN(.(X, .(Y, [])), .(U, .(V, []))) → U51(X, Y, U, V, delete_in(U, .(X, Y), Z))
U51(X, Y, U, V, delete_out(U, .(X, Y), Z)) → PERM_IN(Z, V)
slowsort_in(X, Y) → U1(X, Y, perm_in(X, Y))
perm_in(.(X, .(Y, [])), .(U, .(V, []))) → U5(X, Y, U, V, delete_in(U, .(X, Y), Z))
delete_in(X, .(Y, Z), W) → U7(X, Y, Z, W, delete_in(X, Z, W))
delete_in(X, .(X, Y), Y) → delete_out(X, .(X, Y), Y)
U7(X, Y, Z, W, delete_out(X, Z, W)) → delete_out(X, .(Y, Z), W)
U5(X, Y, U, V, delete_out(U, .(X, Y), Z)) → U6(X, Y, U, V, perm_in(Z, V))
perm_in([], []) → perm_out([], [])
U6(X, Y, U, V, perm_out(Z, V)) → perm_out(.(X, .(Y, [])), .(U, .(V, [])))
U1(X, Y, perm_out(X, Y)) → U2(X, Y, sorted_in(Y))
sorted_in(.(X, .(Y, Z))) → U3(X, Y, Z, le_in(X, Y))
le_in(0, 0) → le_out(0, 0)
le_in(0, s(X)) → le_out(0, s(X))
le_in(s(X), s(Y)) → U8(X, Y, le_in(X, Y))
U8(X, Y, le_out(X, Y)) → le_out(s(X), s(Y))
U3(X, Y, Z, le_out(X, Y)) → U4(X, Y, Z, sorted_in(.(Y, Z)))
sorted_in(.(X, [])) → sorted_out(.(X, []))
sorted_in([]) → sorted_out([])
U4(X, Y, Z, sorted_out(.(Y, Z))) → sorted_out(.(X, .(Y, Z)))
U2(X, Y, sorted_out(Y)) → slowsort_out(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PrologToPiTRSProof
PERM_IN(.(X, .(Y, [])), .(U, .(V, []))) → U51(X, Y, U, V, delete_in(U, .(X, Y), Z))
U51(X, Y, U, V, delete_out(U, .(X, Y), Z)) → PERM_IN(Z, V)
delete_in(X, .(Y, Z), W) → U7(X, Y, Z, W, delete_in(X, Z, W))
delete_in(X, .(X, Y), Y) → delete_out(X, .(X, Y), Y)
U7(X, Y, Z, W, delete_out(X, Z, W)) → delete_out(X, .(Y, Z), W)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PrologToPiTRSProof
U51(V, delete_out) → PERM_IN(V)
PERM_IN(.(U, .(V, []))) → U51(V, delete_in(U))
delete_in(X) → U7(delete_in(X))
delete_in(X) → delete_out
U7(delete_out) → delete_out
delete_in(x0)
U7(x0)
From the DPs we obtained the following set of size-change graphs:
slowsort_in(X, Y) → U1(X, Y, perm_in(X, Y))
perm_in(.(X, .(Y, [])), .(U, .(V, []))) → U5(X, Y, U, V, delete_in(U, .(X, Y), Z))
delete_in(X, .(Y, Z), W) → U7(X, Y, Z, W, delete_in(X, Z, W))
delete_in(X, .(X, Y), Y) → delete_out(X, .(X, Y), Y)
U7(X, Y, Z, W, delete_out(X, Z, W)) → delete_out(X, .(Y, Z), W)
U5(X, Y, U, V, delete_out(U, .(X, Y), Z)) → U6(X, Y, U, V, perm_in(Z, V))
perm_in([], []) → perm_out([], [])
U6(X, Y, U, V, perm_out(Z, V)) → perm_out(.(X, .(Y, [])), .(U, .(V, [])))
U1(X, Y, perm_out(X, Y)) → U2(X, Y, sorted_in(Y))
sorted_in(.(X, .(Y, Z))) → U3(X, Y, Z, le_in(X, Y))
le_in(0, 0) → le_out(0, 0)
le_in(0, s(X)) → le_out(0, s(X))
le_in(s(X), s(Y)) → U8(X, Y, le_in(X, Y))
U8(X, Y, le_out(X, Y)) → le_out(s(X), s(Y))
U3(X, Y, Z, le_out(X, Y)) → U4(X, Y, Z, sorted_in(.(Y, Z)))
sorted_in(.(X, [])) → sorted_out(.(X, []))
sorted_in([]) → sorted_out([])
U4(X, Y, Z, sorted_out(.(Y, Z))) → sorted_out(.(X, .(Y, Z)))
U2(X, Y, sorted_out(Y)) → slowsort_out(X, Y)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
slowsort_in(X, Y) → U1(X, Y, perm_in(X, Y))
perm_in(.(X, .(Y, [])), .(U, .(V, []))) → U5(X, Y, U, V, delete_in(U, .(X, Y), Z))
delete_in(X, .(Y, Z), W) → U7(X, Y, Z, W, delete_in(X, Z, W))
delete_in(X, .(X, Y), Y) → delete_out(X, .(X, Y), Y)
U7(X, Y, Z, W, delete_out(X, Z, W)) → delete_out(X, .(Y, Z), W)
U5(X, Y, U, V, delete_out(U, .(X, Y), Z)) → U6(X, Y, U, V, perm_in(Z, V))
perm_in([], []) → perm_out([], [])
U6(X, Y, U, V, perm_out(Z, V)) → perm_out(.(X, .(Y, [])), .(U, .(V, [])))
U1(X, Y, perm_out(X, Y)) → U2(X, Y, sorted_in(Y))
sorted_in(.(X, .(Y, Z))) → U3(X, Y, Z, le_in(X, Y))
le_in(0, 0) → le_out(0, 0)
le_in(0, s(X)) → le_out(0, s(X))
le_in(s(X), s(Y)) → U8(X, Y, le_in(X, Y))
U8(X, Y, le_out(X, Y)) → le_out(s(X), s(Y))
U3(X, Y, Z, le_out(X, Y)) → U4(X, Y, Z, sorted_in(.(Y, Z)))
sorted_in(.(X, [])) → sorted_out(.(X, []))
sorted_in([]) → sorted_out([])
U4(X, Y, Z, sorted_out(.(Y, Z))) → sorted_out(.(X, .(Y, Z)))
U2(X, Y, sorted_out(Y)) → slowsort_out(X, Y)
SLOWSORT_IN(X, Y) → U11(X, Y, perm_in(X, Y))
SLOWSORT_IN(X, Y) → PERM_IN(X, Y)
PERM_IN(.(X, .(Y, [])), .(U, .(V, []))) → U51(X, Y, U, V, delete_in(U, .(X, Y), Z))
PERM_IN(.(X, .(Y, [])), .(U, .(V, []))) → DELETE_IN(U, .(X, Y), Z)
DELETE_IN(X, .(Y, Z), W) → U71(X, Y, Z, W, delete_in(X, Z, W))
DELETE_IN(X, .(Y, Z), W) → DELETE_IN(X, Z, W)
U51(X, Y, U, V, delete_out(U, .(X, Y), Z)) → U61(X, Y, U, V, perm_in(Z, V))
U51(X, Y, U, V, delete_out(U, .(X, Y), Z)) → PERM_IN(Z, V)
U11(X, Y, perm_out(X, Y)) → U21(X, Y, sorted_in(Y))
U11(X, Y, perm_out(X, Y)) → SORTED_IN(Y)
SORTED_IN(.(X, .(Y, Z))) → U31(X, Y, Z, le_in(X, Y))
SORTED_IN(.(X, .(Y, Z))) → LE_IN(X, Y)
LE_IN(s(X), s(Y)) → U81(X, Y, le_in(X, Y))
LE_IN(s(X), s(Y)) → LE_IN(X, Y)
U31(X, Y, Z, le_out(X, Y)) → U41(X, Y, Z, sorted_in(.(Y, Z)))
U31(X, Y, Z, le_out(X, Y)) → SORTED_IN(.(Y, Z))
slowsort_in(X, Y) → U1(X, Y, perm_in(X, Y))
perm_in(.(X, .(Y, [])), .(U, .(V, []))) → U5(X, Y, U, V, delete_in(U, .(X, Y), Z))
delete_in(X, .(Y, Z), W) → U7(X, Y, Z, W, delete_in(X, Z, W))
delete_in(X, .(X, Y), Y) → delete_out(X, .(X, Y), Y)
U7(X, Y, Z, W, delete_out(X, Z, W)) → delete_out(X, .(Y, Z), W)
U5(X, Y, U, V, delete_out(U, .(X, Y), Z)) → U6(X, Y, U, V, perm_in(Z, V))
perm_in([], []) → perm_out([], [])
U6(X, Y, U, V, perm_out(Z, V)) → perm_out(.(X, .(Y, [])), .(U, .(V, [])))
U1(X, Y, perm_out(X, Y)) → U2(X, Y, sorted_in(Y))
sorted_in(.(X, .(Y, Z))) → U3(X, Y, Z, le_in(X, Y))
le_in(0, 0) → le_out(0, 0)
le_in(0, s(X)) → le_out(0, s(X))
le_in(s(X), s(Y)) → U8(X, Y, le_in(X, Y))
U8(X, Y, le_out(X, Y)) → le_out(s(X), s(Y))
U3(X, Y, Z, le_out(X, Y)) → U4(X, Y, Z, sorted_in(.(Y, Z)))
sorted_in(.(X, [])) → sorted_out(.(X, []))
sorted_in([]) → sorted_out([])
U4(X, Y, Z, sorted_out(.(Y, Z))) → sorted_out(.(X, .(Y, Z)))
U2(X, Y, sorted_out(Y)) → slowsort_out(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
SLOWSORT_IN(X, Y) → U11(X, Y, perm_in(X, Y))
SLOWSORT_IN(X, Y) → PERM_IN(X, Y)
PERM_IN(.(X, .(Y, [])), .(U, .(V, []))) → U51(X, Y, U, V, delete_in(U, .(X, Y), Z))
PERM_IN(.(X, .(Y, [])), .(U, .(V, []))) → DELETE_IN(U, .(X, Y), Z)
DELETE_IN(X, .(Y, Z), W) → U71(X, Y, Z, W, delete_in(X, Z, W))
DELETE_IN(X, .(Y, Z), W) → DELETE_IN(X, Z, W)
U51(X, Y, U, V, delete_out(U, .(X, Y), Z)) → U61(X, Y, U, V, perm_in(Z, V))
U51(X, Y, U, V, delete_out(U, .(X, Y), Z)) → PERM_IN(Z, V)
U11(X, Y, perm_out(X, Y)) → U21(X, Y, sorted_in(Y))
U11(X, Y, perm_out(X, Y)) → SORTED_IN(Y)
SORTED_IN(.(X, .(Y, Z))) → U31(X, Y, Z, le_in(X, Y))
SORTED_IN(.(X, .(Y, Z))) → LE_IN(X, Y)
LE_IN(s(X), s(Y)) → U81(X, Y, le_in(X, Y))
LE_IN(s(X), s(Y)) → LE_IN(X, Y)
U31(X, Y, Z, le_out(X, Y)) → U41(X, Y, Z, sorted_in(.(Y, Z)))
U31(X, Y, Z, le_out(X, Y)) → SORTED_IN(.(Y, Z))
slowsort_in(X, Y) → U1(X, Y, perm_in(X, Y))
perm_in(.(X, .(Y, [])), .(U, .(V, []))) → U5(X, Y, U, V, delete_in(U, .(X, Y), Z))
delete_in(X, .(Y, Z), W) → U7(X, Y, Z, W, delete_in(X, Z, W))
delete_in(X, .(X, Y), Y) → delete_out(X, .(X, Y), Y)
U7(X, Y, Z, W, delete_out(X, Z, W)) → delete_out(X, .(Y, Z), W)
U5(X, Y, U, V, delete_out(U, .(X, Y), Z)) → U6(X, Y, U, V, perm_in(Z, V))
perm_in([], []) → perm_out([], [])
U6(X, Y, U, V, perm_out(Z, V)) → perm_out(.(X, .(Y, [])), .(U, .(V, [])))
U1(X, Y, perm_out(X, Y)) → U2(X, Y, sorted_in(Y))
sorted_in(.(X, .(Y, Z))) → U3(X, Y, Z, le_in(X, Y))
le_in(0, 0) → le_out(0, 0)
le_in(0, s(X)) → le_out(0, s(X))
le_in(s(X), s(Y)) → U8(X, Y, le_in(X, Y))
U8(X, Y, le_out(X, Y)) → le_out(s(X), s(Y))
U3(X, Y, Z, le_out(X, Y)) → U4(X, Y, Z, sorted_in(.(Y, Z)))
sorted_in(.(X, [])) → sorted_out(.(X, []))
sorted_in([]) → sorted_out([])
U4(X, Y, Z, sorted_out(.(Y, Z))) → sorted_out(.(X, .(Y, Z)))
U2(X, Y, sorted_out(Y)) → slowsort_out(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PiDP
LE_IN(s(X), s(Y)) → LE_IN(X, Y)
slowsort_in(X, Y) → U1(X, Y, perm_in(X, Y))
perm_in(.(X, .(Y, [])), .(U, .(V, []))) → U5(X, Y, U, V, delete_in(U, .(X, Y), Z))
delete_in(X, .(Y, Z), W) → U7(X, Y, Z, W, delete_in(X, Z, W))
delete_in(X, .(X, Y), Y) → delete_out(X, .(X, Y), Y)
U7(X, Y, Z, W, delete_out(X, Z, W)) → delete_out(X, .(Y, Z), W)
U5(X, Y, U, V, delete_out(U, .(X, Y), Z)) → U6(X, Y, U, V, perm_in(Z, V))
perm_in([], []) → perm_out([], [])
U6(X, Y, U, V, perm_out(Z, V)) → perm_out(.(X, .(Y, [])), .(U, .(V, [])))
U1(X, Y, perm_out(X, Y)) → U2(X, Y, sorted_in(Y))
sorted_in(.(X, .(Y, Z))) → U3(X, Y, Z, le_in(X, Y))
le_in(0, 0) → le_out(0, 0)
le_in(0, s(X)) → le_out(0, s(X))
le_in(s(X), s(Y)) → U8(X, Y, le_in(X, Y))
U8(X, Y, le_out(X, Y)) → le_out(s(X), s(Y))
U3(X, Y, Z, le_out(X, Y)) → U4(X, Y, Z, sorted_in(.(Y, Z)))
sorted_in(.(X, [])) → sorted_out(.(X, []))
sorted_in([]) → sorted_out([])
U4(X, Y, Z, sorted_out(.(Y, Z))) → sorted_out(.(X, .(Y, Z)))
U2(X, Y, sorted_out(Y)) → slowsort_out(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PiDP
LE_IN(s(X), s(Y)) → LE_IN(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
↳ PiDP
LE_IN(s(X), s(Y)) → LE_IN(X, Y)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
SORTED_IN(.(X, .(Y, Z))) → U31(X, Y, Z, le_in(X, Y))
U31(X, Y, Z, le_out(X, Y)) → SORTED_IN(.(Y, Z))
slowsort_in(X, Y) → U1(X, Y, perm_in(X, Y))
perm_in(.(X, .(Y, [])), .(U, .(V, []))) → U5(X, Y, U, V, delete_in(U, .(X, Y), Z))
delete_in(X, .(Y, Z), W) → U7(X, Y, Z, W, delete_in(X, Z, W))
delete_in(X, .(X, Y), Y) → delete_out(X, .(X, Y), Y)
U7(X, Y, Z, W, delete_out(X, Z, W)) → delete_out(X, .(Y, Z), W)
U5(X, Y, U, V, delete_out(U, .(X, Y), Z)) → U6(X, Y, U, V, perm_in(Z, V))
perm_in([], []) → perm_out([], [])
U6(X, Y, U, V, perm_out(Z, V)) → perm_out(.(X, .(Y, [])), .(U, .(V, [])))
U1(X, Y, perm_out(X, Y)) → U2(X, Y, sorted_in(Y))
sorted_in(.(X, .(Y, Z))) → U3(X, Y, Z, le_in(X, Y))
le_in(0, 0) → le_out(0, 0)
le_in(0, s(X)) → le_out(0, s(X))
le_in(s(X), s(Y)) → U8(X, Y, le_in(X, Y))
U8(X, Y, le_out(X, Y)) → le_out(s(X), s(Y))
U3(X, Y, Z, le_out(X, Y)) → U4(X, Y, Z, sorted_in(.(Y, Z)))
sorted_in(.(X, [])) → sorted_out(.(X, []))
sorted_in([]) → sorted_out([])
U4(X, Y, Z, sorted_out(.(Y, Z))) → sorted_out(.(X, .(Y, Z)))
U2(X, Y, sorted_out(Y)) → slowsort_out(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
SORTED_IN(.(X, .(Y, Z))) → U31(X, Y, Z, le_in(X, Y))
U31(X, Y, Z, le_out(X, Y)) → SORTED_IN(.(Y, Z))
le_in(0, 0) → le_out(0, 0)
le_in(0, s(X)) → le_out(0, s(X))
le_in(s(X), s(Y)) → U8(X, Y, le_in(X, Y))
U8(X, Y, le_out(X, Y)) → le_out(s(X), s(Y))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ RuleRemovalProof
↳ PiDP
↳ PiDP
SORTED_IN(.(X, .(Y, Z))) → U31(X, Y, Z, le_in(X, Y))
U31(X, Y, Z, le_out(X, Y)) → SORTED_IN(.(Y, Z))
le_in(0, 0) → le_out(0, 0)
le_in(0, s(X)) → le_out(0, s(X))
le_in(s(X), s(Y)) → U8(X, Y, le_in(X, Y))
U8(X, Y, le_out(X, Y)) → le_out(s(X), s(Y))
le_in(x0, x1)
U8(x0, x1, x2)
SORTED_IN(.(X, .(Y, Z))) → U31(X, Y, Z, le_in(X, Y))
le_in(0, 0) → le_out(0, 0)
le_in(0, s(X)) → le_out(0, s(X))
POL(.(x1, x2)) = 1 + 2·x1 + x2
POL(0) = 1
POL(SORTED_IN(x1)) = 2·x1
POL(U31(x1, x2, x3, x4)) = 2 + x1 + 2·x2 + 2·x3 + x4
POL(U8(x1, x2, x3)) = 2·x1 + 2·x2 + x3
POL(le_in(x1, x2)) = 2·x1 + 2·x2
POL(le_out(x1, x2)) = x1 + 2·x2
POL(s(x1)) = 2·x1
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ RuleRemovalProof
↳ QDP
↳ DependencyGraphProof
↳ PiDP
↳ PiDP
U31(X, Y, Z, le_out(X, Y)) → SORTED_IN(.(Y, Z))
le_in(s(X), s(Y)) → U8(X, Y, le_in(X, Y))
U8(X, Y, le_out(X, Y)) → le_out(s(X), s(Y))
le_in(x0, x1)
U8(x0, x1, x2)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
DELETE_IN(X, .(Y, Z), W) → DELETE_IN(X, Z, W)
slowsort_in(X, Y) → U1(X, Y, perm_in(X, Y))
perm_in(.(X, .(Y, [])), .(U, .(V, []))) → U5(X, Y, U, V, delete_in(U, .(X, Y), Z))
delete_in(X, .(Y, Z), W) → U7(X, Y, Z, W, delete_in(X, Z, W))
delete_in(X, .(X, Y), Y) → delete_out(X, .(X, Y), Y)
U7(X, Y, Z, W, delete_out(X, Z, W)) → delete_out(X, .(Y, Z), W)
U5(X, Y, U, V, delete_out(U, .(X, Y), Z)) → U6(X, Y, U, V, perm_in(Z, V))
perm_in([], []) → perm_out([], [])
U6(X, Y, U, V, perm_out(Z, V)) → perm_out(.(X, .(Y, [])), .(U, .(V, [])))
U1(X, Y, perm_out(X, Y)) → U2(X, Y, sorted_in(Y))
sorted_in(.(X, .(Y, Z))) → U3(X, Y, Z, le_in(X, Y))
le_in(0, 0) → le_out(0, 0)
le_in(0, s(X)) → le_out(0, s(X))
le_in(s(X), s(Y)) → U8(X, Y, le_in(X, Y))
U8(X, Y, le_out(X, Y)) → le_out(s(X), s(Y))
U3(X, Y, Z, le_out(X, Y)) → U4(X, Y, Z, sorted_in(.(Y, Z)))
sorted_in(.(X, [])) → sorted_out(.(X, []))
sorted_in([]) → sorted_out([])
U4(X, Y, Z, sorted_out(.(Y, Z))) → sorted_out(.(X, .(Y, Z)))
U2(X, Y, sorted_out(Y)) → slowsort_out(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
DELETE_IN(X, .(Y, Z), W) → DELETE_IN(X, Z, W)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
DELETE_IN(X) → DELETE_IN(X)
DELETE_IN(X) → DELETE_IN(X)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
PERM_IN(.(X, .(Y, [])), .(U, .(V, []))) → U51(X, Y, U, V, delete_in(U, .(X, Y), Z))
U51(X, Y, U, V, delete_out(U, .(X, Y), Z)) → PERM_IN(Z, V)
slowsort_in(X, Y) → U1(X, Y, perm_in(X, Y))
perm_in(.(X, .(Y, [])), .(U, .(V, []))) → U5(X, Y, U, V, delete_in(U, .(X, Y), Z))
delete_in(X, .(Y, Z), W) → U7(X, Y, Z, W, delete_in(X, Z, W))
delete_in(X, .(X, Y), Y) → delete_out(X, .(X, Y), Y)
U7(X, Y, Z, W, delete_out(X, Z, W)) → delete_out(X, .(Y, Z), W)
U5(X, Y, U, V, delete_out(U, .(X, Y), Z)) → U6(X, Y, U, V, perm_in(Z, V))
perm_in([], []) → perm_out([], [])
U6(X, Y, U, V, perm_out(Z, V)) → perm_out(.(X, .(Y, [])), .(U, .(V, [])))
U1(X, Y, perm_out(X, Y)) → U2(X, Y, sorted_in(Y))
sorted_in(.(X, .(Y, Z))) → U3(X, Y, Z, le_in(X, Y))
le_in(0, 0) → le_out(0, 0)
le_in(0, s(X)) → le_out(0, s(X))
le_in(s(X), s(Y)) → U8(X, Y, le_in(X, Y))
U8(X, Y, le_out(X, Y)) → le_out(s(X), s(Y))
U3(X, Y, Z, le_out(X, Y)) → U4(X, Y, Z, sorted_in(.(Y, Z)))
sorted_in(.(X, [])) → sorted_out(.(X, []))
sorted_in([]) → sorted_out([])
U4(X, Y, Z, sorted_out(.(Y, Z))) → sorted_out(.(X, .(Y, Z)))
U2(X, Y, sorted_out(Y)) → slowsort_out(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
PERM_IN(.(X, .(Y, [])), .(U, .(V, []))) → U51(X, Y, U, V, delete_in(U, .(X, Y), Z))
U51(X, Y, U, V, delete_out(U, .(X, Y), Z)) → PERM_IN(Z, V)
delete_in(X, .(Y, Z), W) → U7(X, Y, Z, W, delete_in(X, Z, W))
delete_in(X, .(X, Y), Y) → delete_out(X, .(X, Y), Y)
U7(X, Y, Z, W, delete_out(X, Z, W)) → delete_out(X, .(Y, Z), W)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
U51(U, V, delete_out(U)) → PERM_IN(V)
PERM_IN(.(U, .(V, []))) → U51(U, V, delete_in(U))
delete_in(X) → U7(X, delete_in(X))
delete_in(X) → delete_out(X)
U7(X, delete_out(X)) → delete_out(X)
delete_in(x0)
U7(x0, x1)
From the DPs we obtained the following set of size-change graphs: